package priv.menguer.observer;

import priv.menguer.observer.controller.BinaryObserver;
import priv.menguer.observer.controller.HexaObserver;
import priv.menguer.observer.controller.OctalObserver;
import priv.menguer.observer.controller.Subject;

/**
 * @Title ObserverPatternDemo.java
 * @description 当对象间存在一对多关系时，则使用观察者模式（Observer Pattern）。
 *              <p>
 *              比如，当一个对象被修改时，则会自动通知它的依赖对象。
 *              </p>
 * 				观察者模式属于行为型模式。
 * @time 2018年10月26日 上午11:23:46
 * @author menguer@126.com
 * @version 1.0
 */
public class ObserverPatternDemo {
	public static void main(String[] args) {
		Subject subject = new Subject();

		new HexaObserver(subject);
		new OctalObserver(subject);
		new BinaryObserver(subject);

		System.out.println("First state change: 15");
		subject.setState(15);
		System.out.println("Second state change: 10");
		subject.setState(10);
	}
}
